#pragma once

#include <string>
#include <map>

using namespace std;

#include "pugixml/pugixml.hpp"
#include "topcvt_cfg.hpp"

namespace topcvt
{
    class PktConfigParser
    {
    public:
		static void parseElementAttributes(pugi::xml_node& node, AttributeableCfg& cfg);
		static void parseRootCfg(pugi::xml_node& node, RootCfg& cfg);
		static void parseIncludeCfg(pugi::xml_node& node, IncludeCfg& cfg);
		static void parsePolicyCfg(pugi::xml_node& node, PolicyCfg& cfg);
		static void parseStructCfg(pugi::xml_node& node, StructCfg& cfg);
		static void parseLoopCfg(pugi::xml_node& node, LoopCfg& cfg);
		static void parseFieldCfg(pugi::xml_node& node, FieldCfg& cfg);
		static void parseSwitchCfg(pugi::xml_node& node, SwitchCfg& cfg);
		static void parseCaseCfg(pugi::xml_node& node, CaseCfg& cfg);
    };
};